REM Funktionszeichner SCREEN 1,640,400,3,4 WINDOW 1,"Funktionszeichner 1993 von S.Schilling",(0,0)-(617,385),15,1 anf: PALETTE 1,0.73,0.73,0.73 PALETTE 3,1,0.13,0.93 PALETTE 5,0.33,0.87,0 PALETTE 4,1,1,0.13 COLOR 1,2 CLS LOCATE 2,20:PRINT "F U N K T I O N S - Z E I C H N E R" LOCATE 3,20:PRINT "-----------------------------------" LOCATE 4,20:PRINT " 1993 von S.Schilling" LOCATE 6,10:PRINT "Mathematisches Programm zur Darstellung nahezu jeder beliebigen" LOCATE 7,10:PRINT "2-dimensionalen Funktion (keine Einschränkung der Potenzen) mit" LOCATE 8,10:PRINT "bis zu 6 Funktionssummanden der Form :" LOCATE 10,15:PRINT " z p" LOCATE 11,15:PRINT " (-,+) --- x " LOCATE 12,15:PRINT " n " LOCATE 14,10:PRINT "Ein mögliches Beispiel einer Funktion mit 4 Summanden wäre also:" LOCATE 17,10:PRINT " 1 3 3 2 9 1 5 0" LOCATE 18,5:PRINT "f(x) = --- * x - --- * x - --- * x + --- * x " LOCATE 19,10:PRINT " 4 4 4 1 " LOCATE 21,10:PRINT " |--------| |---------| |---------| |---------|" LOCATE 22,10:PRINT " 1.Summand 2.Summand 3.Summand 4.Summand " LOCATE 24,10:PRINT "z=1,n=4,p=3 x^1 = x x^0 = 1 " LOCATE 27,10:PRINT "Der Amiga benutzt das Zeichen ` ^ ` ,um mit einer Potenz in einer" LOCATE 28,10:PRINT "Zeile rechnen zu können." LOCATE 30,10:PRINT " 3 LOCATE 31,10:PRINT " x entspricht also x^3" LOCATE 33,5:PRINT "Für den Amiga sieht die Funktion so aus :f(x)=1/4*x^3 -3/4*x^2 -9/4*x +5" LOCATE 35,8:PRINT "Damit die Funktionen schön rund dargestellt werden können,mußte ich" LOCATE 36,8:PRINT "den hochauflösenden Graphikmodus einstellen.Der Text flimmert deshalb" LOCATE 37,8:PRINT "und ist ein bischen schwerer zu lesen.Dafür sind die Funktionen " LOCATE 38,8:PRINT "(auf die es ja ankommt) wesentlich besser." LOCATE 45,8:PRINT ">>Taste<<" WHILE INKEY$="":WEND CLS COLOR 3 LOCATE 5,10:PRINT "Dieses Programm ist Shareware.";:COLOR 1:PRINT "Wer es benutzen möchte sollte einen" LOCATE 6,10:PRINT "Shareware-Betrag in Höhe von ";:COLOR 3:PRINT "5 DM ";:COLOR 1:PRINT "an mich entrichten." LOCATE 8,15:PRINT "Meine Adresse :" COLOR 5 LOCATE 11,25:PRINT "Stephan Schilling" LOCATE 12,25:PRINT "Gartenstraße 3a" LOCATE 13,25:PRINT "7500 Karlsruhe 1" LOCATE 14,25:PRINT "Deutschland" COLOR 1 LOCATE 17,10:PRINT "Ich habe noch eine weitere Version dieses Programmes in Planung." LOCATE 18,10:PRINT "Wer den Shareware-Betrag bezahlt wird registriert und erhält" LOCATE 19,10:PRINT "(wenn ein frankierter und adressieter Briefumschlag beiliegen)" LOCATE 20,10:PRINT "von mir Nachricht bei deren Vollendung.Diese weitere Version " LOCATE 21,10:PRINT "ist dann für alle registrierten User kostenlos.Ihr bekommt sie bei " LOCATE 22,10:PRINT "Sendung einer Leerdiskette + frankiertem,adressiertem Umschlag " LOCATE 23,10:PRINT "zugeschickt." LOCATE 25,5:PRINT " Geplant ist :" LOCATE 27,1:PRINT " - Darstellung von Exponential-Funktionen" LOCATE 28,1:PRINT " - Wurzelfunktionen ,die im Moment leider nur beschränkt möglich sind :" LOCATE 29,5:PRINT " Wurzel aus x : x ^ .5 (x hoch 1/2)" LOCATE 30,5:PRINT " 3.Wurzel aus x : x ^ 0.33 (x hoch 1/3) ..." LOCATE 31,1:PRINT " - Berechnung von Tangentengleichungen und deren Darstellung " LOCATE 32,1:PRINT " - Darstellung mehrerer Funktionen (im Moment nur mit Abl.fkt. möglich)" LOCATE 33,1:PRINT " - Bessere Maskendarstellung + einfacheres Eingeben von Funktionen" LOCATE 34,1:PRINT " - eventuell Möglichkeit zur Speicherung im IFF-Format" LOCATE 35,1:PRINT " - Speicherfunktion zum Speichern besonderer Funktionen" LOCATE 37,3:PRINT "Ihr seht,ich habe ne ganze Menge vor,um mein Programm zu verbessern." LOCATE 38,3:PRINT "Allerdings meine ich,daß Ihr im Moment auch schon ein gutes und hilfreiches " LOCATE 39,3:PRINT "Programm vor Euch habt." LOCATE 41,5:PRINT "Also gutes Gelingen und viel Spaß mit meinem Programm" LOCATE 42,5:PRINT " S.Schilling" LOCATE 45,2:PRINT "Gebt doch mal das Beispiel von oben an,mit einem Koordinatenraster von 25," LOCATE 46,2:PRINT "einer Zeichendichte von 0.01,dem Definitionsbereich von -3.5 bis 5.5 " LOCATE 47,2:PRINT "und 2 Ableitungsfunktionen. >>Taste<<" WHILE INKEY$="":WEND CLS inp: LOCATE 5,5:PRINT "Wenn ihr bei Anz. der Summanden -1 eingebt,erscheint eine" LOCATE 6,5:PRINT "Tabelle mit Beispielfunktionen." LOCATE 10,10:INPUT "Wieviele Summanden hat f(x) :";anz IF anz=-1 THEN beispiele IF anz=0 OR anz<-1 OR anz>6 THEN inp IF anz>-1 AND anz<0 THEN inp anz=INT(anz) LOCATE 11,5:PRINT "1.Summand" LOCATE 12,10:INPUT "Potenz von x :";p1 LOCATE 13,10:INPUT "Faktor vor x Zähler,Nenner :";z1,n1 LOCATE 14,10:INPUT "(p)os,(n)eg :";w1$ IF anz<2 THEN weiter LOCATE 15,5:PRINT "2.Summand" LOCATE 16,10:INPUT "Potenz von x :";p2 LOCATE 17,10:INPUT "Faktor vor x Z,N :";z2,n2 LOCATE 18,10:INPUT "(p)os,(n)eg :";w2$ IF anz<3 THEN weiter LOCATE 19,5:PRINT "3.Summand" LOCATE 20,10:INPUT "Potenz von x :";p3 LOCATE 21,10:INPUT "Faktor vor x Z,N :";z3,n3 LOCATE 22,10:INPUT "(p)os,(n)eg :";w3$ IF anz<4 THEN weiter LOCATE 23,5:PRINT "4.Summand" LOCATE 24,10:INPUT "Potenz von x :";p4 LOCATE 25,10:INPUT "Faktor vor x Z,N :";z4,n4 LOCATE 26,10:INPUT "(p)os,(n)eg :";w4$ IF anz<5 THEN weiter LOCATE 27,5:PRINT "5.Summand" LOCATE 28,10:INPUT "Potenz von x :";p5 LOCATE 29,10:INPUT "Faktor vor x Z,N :";z5,n5 LOCATE 30,10:INPUT "(p)os,(n)eg :";w5$ IF anz<6 THEN weiter LOCATE 31,5:PRINT "6.Summand" LOCATE 32,10:INPUT "Potenz von x :";p6 LOCATE 33,10:INPUT "Faktor vor x Z,N :";z6,n6 LOCATE 34,10:INPUT "(p)os,(n)eg :";w6$ weiter: LOCATE 35,10:INPUT "Definitionsbereich (x1;x2) :";i1,i2 LOCATE 36,10:INPUT "Zeichendichte :";l LOCATE 37,10:INPUT "1.Ableitungsfunktion (j/n) :";ab1$ IF ab1$="n" THEN abfr LOCATE 38,10:INPUT "2.Ableitungsfunktion (j/n) :";ab2$ IF ab2$="n" THEN abfr LOCATE 39,10:INPUT "3.Ableitungsfunktion (j/n) :";ab3$ IF ab3$="n" THEN abfr LOCATE 40,10:INPUT "4.Ableitungsfunktion (j/n) :";ab4$ abfr: LOCATE 41,10:INPUT "Größe des Koordinatenrasters:";co IF co<10 THEN LOCATE 41,40:PRINT " ":GOTO abfr LOCATE 42,10:INPUT "Hintergrundraster (j/n) :";ra$ LOCATE 43,10:INPUT "Maximaler |y| :";ymax PALETTE 1,1,1,0.13 PALETTE 2,0,0,0 PALETTE 3,1,0.13,0.93 PALETTE 4,0.93,0.2,0 PALETTE 5,0.8,0.6,0.53 PALETTE 6,0.73,0.73,0.73 PALETTE 7,0.33,0.87,0 coor: CLS LINE (10,210)-(610,210),6 LINE (605,205)-(610,210),6 LINE (605,215)-(610,210),6 LINE (310,10)-(310,390),6 LINE (305,15)-(310,10),6 LINE (315,15)-(310,10),6 COLOR 6 LOCATE 2,38:PRINT "y" LOCATE 29,76:PRINT "x" FOR i=310 TO 630 STEP co PSET (i,211),6 NEXT i FOR i=310 TO 10 STEP -co PSET (i,211),6 NEXT i FOR i=210 TO 390 STEP co PSET (309,i),6 NEXT i FOR i=210 TO 10 STEP -co PSET (309,i),6 NEXT i IF ra$="n" THEN pro raster: y=210 ra1: y=y-co IF y<210-20*co THEN ra2 FOR x=310 TO 630 STEP co PSET (x,y),6 NEXT x GOTO ra1 ra2: y=210 rax2: y=y+co IF y>210+20*co THEN ra3 FOR x=310 TO 630 STEP co PSET (x,y),6 NEXT x GOTO rax2 ra3: y=210 rax3: y=y-co IF y<210-20*co THEN ra4 FOR x=310 TO 10 STEP -co PSET (x,y),6 NEXT x GOTO rax3 ra4: y=210 rax4: y=y+co IF y>210+20*co THEN pro FOR x=310 TO 10 STEP -co PSET (x,y),6 NEXT x GOTO rax4 pro: COLOR 1:LOCATE 1,1:PRINT "f(x)" COLOR 3:LOCATE 2,1:PRINT "f`(x)" COLOR 4:LOCATE 3,1:PRINT "f``(x)" COLOR 5:LOCATE 4,1:PRINT "f```(x)" COLOR 7:LOCATE 5,1:PRINT "f````(x)" COLOR 6:LOCATE 6,1:PRINT "E=1" IF w1$="p" THEN c1=1 IF w1$="n" THEN c1=-1 IF w2$="p" THEN c2=1 IF w2$="n" THEN c2=-1 IF w3$="p" THEN c3=1 IF w3$="n" THEN c3=-1 IF w4$="p" THEN c4=1 IF w4$="n" THEN c4=-1 IF w5$="p" THEN c5=1 IF w5$="n" THEN c5=-1 IF w6$="p" THEN c6=1 IF w6$="n" THEN c6=-1 x=i1 schleife: x=x+l:IF x>i2 THEN abl t1=(z1/n1)*x^p1*c1:IF anz<2 THEN r1 t2=(z2/n2)*x^p2*c2:IF anz<3 THEN r1 t3=(z3/n3)*x^p3*c3:IF anz<4 THEN r1 t4=(z4/n4)*x^p4*c4:IF anz<5 THEN r1 t5=(z5/n5)*x^p5*c5:IF anz<6 THEN r1 t6=(z6/n6)*x^p6*c6 r1: IF INKEY$<>"" THEN ende IF anz=1 THEN ma IF anz=2 THEN mb IF anz=3 THEN mc IF anz=4 THEN md IF anz=5 THEN me IF anz=6 THEN mf END ma:y=t1:IF y>ymax OR y<-ymax THEN schleife :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),1:GOTO schleife mb:y=t1+t2:IF y>ymax OR y<-ymax THEN schleife :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),1:GOTO schleife mc:y=t1+t2+t3:IF y>ymax OR y<-ymax THEN schleife :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),1:GOTO schleife md:y=t1+t2+t3+t4:IF y>ymax OR y<-ymax THEN schleife :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),1:GOTO schleife me:y=t1+t2+t3+t4+t5:IF y>ymax OR y<-ymax THEN schleife :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),1:GOTO schleife mf:y=t1+t2+t3+t4+t5+t6:IF y>ymax OR y<-ymax THEN schleife :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),1:GOTO schleife abl: IF ab1$="n" THEN ende x=i1 schleife2: x=x+l IF x>i2 THEN abl2 t1=(z1/n1)*p1*x^(p1-1)*c1:IF anz<2 THEN r2 t2=(z2/n2)*p2*x^(p2-1)*c2:IF anz<3 THEN r2 t3=(z3/n3)*p3*x^(p3-1)*c3:IF anz<4 THEN r2 t4=(z4/n4)*p4*x^(p4-1)*c4:IF anz<5 THEN r2 t5=(z5/n5)*p5*x^(p5-1)*c5:IF anz<6 THEN r2 t6=(z6/n6)*p6*x^(p6-1)*c6 r2: IF INKEY$<>"" THEN ende IF anz=1 THEN m2a IF anz=2 THEN m2b IF anz=3 THEN m2c IF anz=4 THEN m2d IF anz=5 THEN m2e IF anz=6 THEN m2f END m2a:y=t1:IF y>ymax OR y<-ymax THEN schleife2 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),3:GOTO schleife2 m2b:y=t1+t2:IF y>ymax OR y<-ymax THEN schleife2 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),3:GOTO schleife2 m2c:y=t1+t2+t3:IF y>ymax OR y<-ymax THEN schleife2 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),3:GOTO schleife2 m2d:y=t1+t2+t3+t4:IF y>ymax OR y<-ymax THEN schleife2 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),3:GOTO schleife2 m2e:y=t1+t2+t3+t4+t5:IF y>ymax OR y<-ymax THEN schleife2 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),3:GOTO schleife2 m2f:y=t1+t2+t3+t4+t5+t6:IF y>ymax OR y<-ymax THEN schleife2 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),3:GOTO schleife2 abl2: IF ab2$="n" THEN ende x=i1 schleife3: x=x+l IF x>i2 THEN abl3 t1=(z1/n1)*p1*(p1-1)*x^(p1-2)*c1:IF anz<2 THEN r3 t2=(z2/n2)*p2*(p2-1)*x^(p2-2)*c2:IF anz<3 THEN r3 t3=(z3/n3)*p3*(p3-1)*x^(p3-2)*c3:IF anz<4 THEN r3 t4=(z4/n4)*p4*(p4-1)*x^(p4-2)*c4:IF anz<5 THEN r3 t5=(z5/n5)*p5*(p5-1)*x^(p5-2)*c5:IF anz<6 THEN r3 t6=(z6/n6)*p6*(p6-1)*x^(p6-2)*c6 r3: IF INKEY$<>"" THEN ende IF anz=1 THEN m3a IF anz=2 THEN m3b IF anz=3 THEN m3c IF anz=4 THEN m3d IF anz=5 THEN m3e IF anz=6 THEN m3f END m3a:y=t1:IF y>ymax OR y<-ymax THEN schleife3 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),4:GOTO schleife3 m3b:y=t1+t2:IF y>ymax OR y<-ymax THEN schleife3 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),4:GOTO schleife3 m3c:y=t1+t2+t3:IF y>ymax OR y<-ymax THEN schleife3 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),4:GOTO schleife3 m3d:y=t1+t2+t3+t4:IF y>ymax OR y<-ymax THEN schleife3 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),4:GOTO schleife3 m3e:y=t1+t2+t3+t4+t5:IF y>ymax OR y<-ymax THEN schleife3 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),4:GOTO schleife3 m3f:y=t1+t2+t3+t4+t5+t6:IF y>ymax OR y<-ymax THEN schleife3 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),4:GOTO schleife3 abl3: IF ab3$="n" THEN ende x=i1 schleife4: x=x+l IF x>i2 THEN abl4 t1=(z1/n1)*p1*(p1-1)*(p1-2)*x^(p1-3)*c1:IF anz<2 THEN r4 t2=(z2/n2)*p2*(p2-1)*(p2-2)*x^(p2-3)*c2:IF anz<3 THEN r4 t3=(z3/n3)*p3*(p3-1)*(p3-2)*x^(p3-3)*c3:IF anz<4 THEN r4 t4=(z4/n4)*p4*(p4-1)*(p4-2)*x^(p4-3)*c4:IF anz<5 THEN r4 t5=(z5/n5)*p5*(p5-1)*(p5-2)*x^(p5-3)*c5:IF anz<6 THEN r4 t6=(z6/n6)*p6*(p6-1)*(p6-2)*x^(p6-3)*c6 r4: IF INKEY$<>"" THEN ende IF anz=1 THEN m4a IF anz=2 THEN m4b IF anz=3 THEN m4c IF anz=4 THEN m4d IF anz=5 THEN m4e IF anz=6 THEN m4f END m4a:y=t1:IF y>ymax OR y<-ymax THEN schleife4 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),5:GOTO schleife4 m4b:y=t1+t2:IF y>ymax OR y<-ymax THEN schleife4 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),5:GOTO schleife4 m4c:y=t1+t2+t3:IF y>ymax OR y<-ymax THEN schleife4 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),5:GOTO schleife4 m4d:y=t1+t2+t3+t4:IF y>ymax OR y<-ymax THEN schleife4 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),5:GOTO schleife4 m4e:y=t1+t2+t3+t4+t5:IF y>ymax OR y<-ymax THEN schleife4 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),5:GOTO schleife4 m4f:y=t1+t2+t3+t4+t5+t6:IF y>ymax OR y<-ymax THEN schleife4 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),5:GOTO schleife4 abl4: IF ab4$="n" THEN ende x=i1 schleife5: x=x+l IF x>i2 THEN ende t1=(z1/n1)*p1*(p1-1)*(p1-2)*(p1-3)*x^(p1-4)*c1:IF anz<2 THEN r5 t2=(z2/n2)*p2*(p2-1)*(p2-2)*(p2-3)*x^(p2-4)*c2:IF anz<3 THEN r5 t3=(z3/n3)*p3*(p3-1)*(p3-2)*(p3-3)*x^(p3-4)*c3:IF anz<4 THEN r5 t4=(z4/n4)*p4*(p4-1)*(p4-2)*(p4-3)*x^(p4-4)*c4:IF anz<5 THEN r5 t5=(z5/n5)*p5*(p5-1)*(p5-2)*(p5-3)*x^(p5-4)*c5:IF anz<6 THEN r5 t6=(z6/n6)*p6*(p6-1)*(p6-2)*(p6-3)*x^(p6-4)*c6 r5: IF INKEY$<>"" THEN ende IF anz=1 THEN m5a IF anz=2 THEN m5b IF anz=3 THEN m5c IF anz=4 THEN m5d IF anz=5 THEN m5e IF anz=6 THEN m5f END m5a:y=t1:IF y>ymax OR y<-ymax THEN schleife5 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),7:GOTO schleife5 m5b:y=t1+t2:IF y>ymax OR y<-ymax THEN schleife5 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),7:GOTO schleife5 m5c:y=t1+t2+t3:IF y>ymax OR y<-ymax THEN schleife5 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),7:GOTO schleife5 m5d:y=t1+t2+t3+t4:IF y>ymax OR y<-ymax THEN schleife5 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),7:GOTO schleife5 m5e:y=t1+t2+t3+t4+t5:IF y>ymax OR y<-ymax THEN schleife5 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),7:GOTO schleife5 m5f:y=t1+t2+t3+t4+t5+t6:IF y>ymax OR y<-ymax THEN schleife5 :ELSE x2=310+co*x:y2=210-co*y:PSET (x2,y2),7:GOTO schleife5 beispiele: CLS LOCATE 5,5:PRINT "Nr. | 1 | 2 | 3 | 4 " LOCATE 6,5:PRINT "------------------------+------------+---------+----------+---------" LOCATE 8,5:PRINT "Anz.d.Summanden | 3 | 1 | 2 | 4 " LOCATE 10,5:PRINT "1.Summand (p,z,n)(+,-) | 4,1,20(+) |2,1,1(+) | 1,3,1(+) | 3,1,4(+)" LOCATE 12,5:PRINT "2.Summand (p,z,n) | 2,29,20(-) | --- | 0,1,1(-) | 2,3,4(-)" LOCATE 14,5:PRINT "3.Summand (p,z,n) | 0,5,1(+) | --- | --- | 1,9,1(-)" LOCATE 16,5:PRINT "4.Summand (p,z,n) | --- | --- | --- | 0,5,1(+)" LOCATE 18,5:PRINT "Zeichendichte | 0.01 | 0.01 | 0.02 | 0.005 " LOCATE 20,5:PRINT "Definitionsbereich | -5,5 | -3,3 | -4,4 | -3,5 " LOCATE 22,5:PRINT "Anzahl der Ableitungen | 3 | 1 | --- | 2 " LOCATE 24,5:PRINT "Koordinatenraster | 25 | 40 | 30 | 25 " LOCATE 30,10:PRINT " >>Taste<<" WHILE INKEY$="":WEND CLS GOTO inp ende: LOCATE 7,1:PRINT ">>Taste<<" WHILE INKEY$="":WEND GOTO anf